package com.service;
import java.util.List;

import com.entity.Report;
import com.entity.Goods;
import com.entity.Student;
import com.dao.ReportDao;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * 举报物品管理service
 */
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class ReportService {

    @Autowired
    private ReportDao reportDao;

    /**
     * 添加举报记录。
     * @param report
     * @return 保存成功时返回举报对象，失败时返回 null。
     */
    @Transactional
    public Report save(Report report){
        // 设置默认状态，如果实体中未提供
        if (report.getStatus() == null || report.getStatus().trim().isEmpty()) {
            report.setStatus("PENDING");
        }

        int affectedRows = reportDao.save(report);
        return (affectedRows > 0) ? report : null;
    }

    /**
     * 根据学生和商品查询举报记录。
     * @param student 举报的学生。
     * @param goods 举报的商品。
     * @return 查询到的举报对象，若未举报则返回 null。
     */
    @Transactional(readOnly = true)
    public Report findByStudentAndGoods(Student student,Goods goods){
        return reportDao.findByStudentAndGoods(student, goods);
    }

    /**
     * 查询所有举报记录（用于管理员）。
     */
    @Transactional(readOnly = true)
    public List<Report> findAll() {
        return reportDao.findAll();
    }

    /**
     * 根据举报 ID 删除举报记录（用于管理员）。
     */
    @Transactional
    public boolean deleteById(Long id) {
        return reportDao.deleteById(id) > 0;
    }

}
